          SUBROUTINE (MAT OE.VARS,NEW.VALUE,IS.DIR,HLP,CHG,ACTIONS,RESPS,REENTRY)
** Version# 20.0001[8] - 08/16/2012 - 04:37pm - TSMITH - eclipse
*** V20.0001 Change - Custom Coding . - 08/16/2012 - TSMITH - eclipse

*** Subroutine - OE.VE.UPD.UNIT.COST
*-------------------------------------------------------------------------*
*** Formerly Known As: OE::IN.UNTCST, IN.NUM::9, OE::IN.DCST, IN.NUM::54
*** Purpose: To take the VALUE passed in, and apply it to the order.  If
*** there are any problems with this operation, send them back in ACTIONS.
*-------------------------------------------------------------------------*
*** OE.VARS     - OID, GEN, etc. (see CC OE.EQUATES)               [IN]
*** NEW.VALUE   - What was entered by the user in OE.              [IN]
*** IS.COGS     - Flag saying that we are changing cogs cost       [IN]
***             - instead of price
*** HLP         - Whether the user requested help or not           (IN)
*** CHG         - Whether the user changed the input at all.       (IN)
*** ACTION      - AM list of ACTIONs that tell what went wrong.    (OUT)
*** RESPS       - Responses to actions.                            [IN/OUT]
*** REENTRY     - Need to come back into the routine or not.       (OUT)
*-------------------------------------------------------------------------*
*** COMMON: Modifies LED and LD.  Needs CUS, CUSS, PLNE.
*-------------------------------------------------------------------------*
          $INCLUDE CC OE.EQUATES

          REENTRY = NO

          GEN = GEN%
          IF IS.DIR THEN
             LOCATE LED(33)<1,GEN%> IN LED(12)<1> SETTING GEN ELSE
                GEN = GEN%
             END
          END

          SV.GEN = GEN
          CST.ATTB = 'EXT'
          GET.PO.VARIANCE.VAL PO.VAR.CST,OID%,GEN,LDID%,CST.ATTB,QSIGN
          GEN = SV.GEN

          IAO.UPD.OK = NO
          ***if this is an IAO item, we need to check to see if user is
          ***authorized for editting COGS or COST
          ** if they are allowed to edit IAO cogs then let them do it
          ***without checking other authorizations
          IF  LD(114) AND MODE%='S' THEN
             IAO.ID  = 'IAO.AUTH.COGS'
             TEXT.IN = '%189'
             AUTH.KEY = 'SOE.EDIT.IAO.INV.COGS'
             LOCATE IAO.ID IN RESPS<1> SETTING RPOS THEN
                IF NOT(RESPS<2,RPOS,1>) THEN
                   RETURN
                END ELSE
                   IAO.UPD.OK = YES
                END
             END ELSE
                REENTRY = YES
                ACT.ID   = IAO.ID
                LEVEL = 1
                BEGIN CASE
                   CASE NEW.ORDER%
                      LEVEL = 1
                   CASE NOT(NEW.ORDER%) AND LED(6)<1,GEN> # 'I'
                      LEVEL = 2
                   CASE NOT(NEW.ORDER%) AND LED(6)<1,GEN> = 'I'
                      LEVEL = 3
                   CASE OTHERWISE
                      NULL
                END CASE
                ACTION.ADD.AUTH ACTIONS,ACT.ID,,TEXT.IN,,AUTH.KEY,LEVEL,,OID%,GEN%
                RETURN
             END
          END
          ***if they are allowed to update COGS in IAO item.
          ***let them do it without checking other authorizations
          IF IAO.UPD.OK THEN GOTO EDIT.IT

          * Don't let the user edit the costs on a MJB or Jr Order
          * w/o the proper authorizations...
          IS.JR     = LED(129)<1,1>
          IS.MJB    = LED(128)<1,1>
          IF IS.MJB OR IS.JR THEN
             OE.MJB.AUTH.REQD OID%,IS.AUTH.REQD
             IF (IS.AUTH.REQD) THEN
                KEY.ID               = 'SOE.MASTER.BID.EDIT'
                CHECK.KEY KEY.ID,,KEY.LEVEL
                IF KEY.LEVEL < 4 THEN
                   MJB.ID            = 'MJB.COST.AUTH'
                   PRMPT             = '%196'
                   KEY.LEVEL         = 3
                   IF IS.JR THEN
                      * Find out the relevant Lot Item Info.
                      OE.VE.GET.LOT.INFO LDID%,LOT.ITEM
                      IF NOT(LOT.ITEM) THEN
                         PRMPT          = '%190'
                         KEY.LEVEL      = 3
                      END ELSE
                         * If we've gotten here on a Lot Item, it could
                         * only be for an INVOICED GEN of a Lot Item.
                         PRMPT          = '%606'
                         KEY.LEVEL      = 1
                      END
                   END
                   LOCATE MJB.ID IN RESPS<1> SETTING RPOS THEN
                      IF NOT(RESPS<2,RPOS,1>)                   THEN RETURN
                   END ELSE
                      ACTION.ADD.AUTH ACTIONS,MJB.ID,,PRMPT,,KEY.ID,KEY.LEVEL,,OID%,GEN%
                      REENTRY = YES
                      RETURN
                   END
                END
             END ELSE
                KEY.LEVEL = 4
             END
          END
EDIT.IT:  BR  = LED(2)<1,GEN,2>
          BID = LED(6)<1,GEN>
          OE.VE.VERF.COST.LVL OID%,GEN,LDID%,BR,BID,NO,CHG,HLP,NEW.VALUE,ACTIONS,RESPS,REENTRY,FATAL,IAO.UPD.OK
          IF FATAL THEN RETURN
          * Find out the relevant Lot Item Info.
          OE.VE.GET.LOT.INFO LDID%,LOT.ITEM
          IF LOT.ITEM THEN
             GOSUB LOT.ITEM
             RETURN
          END

          PRICE.PER.GET PER,,,,LED(22)<1,GEN>

          IF NEW.VALUE = '' THEN IQ.COGS = '' ELSE
             IF LD(85) THEN
                UOM.PER.GET LD(85),PER
             END
             IQ.COGS = ICONV(ICONV(OCONV(NEW.VALUE,'MR3'),'MR9')/PER,'MR0')
          END
          IF MODE%='T' THEN POVRD = 'T' ELSE POVRD = YES



          *** Check the GP to make sure the controls are correct.
          PRC.ERROR = NO
          IF LED(6)<1,GEN> # 'Y' THEN
             IF IQ.COGS = '' THEN
                OE.CALC.COGS GEN,TIQ.COGS,YES
             END ELSE
                TIQ.COGS = IQ.COGS
             END
             IF (IQ.COGS # '') AND (LED(92)<1,GEN,2>+0 # 0) THEN
                XCURR   = LED(92)<1,GEN,2>
                XCURR   = OCONV(XCURR,'MR4')
                IQ.COGS = IQ.COGS * XCURR
                TIQ.COGS = TIQ.COGS * XCURR
             END
             OE.GP.CHECK OID%,GEN,LDID%,,PRC.ERROR,TIQ.COGS,,,,,,,YES,ACTIONS,RESPS,STOP.FLOW
             IF STOP.FLOW THEN
                REENTRY = YES
                RETURN
             END
          END

          IF NOT(PRC.ERROR) THEN
             ACT.RQD = NO
             * If manual override clear the last override code
             IF CHG AND LD(48)<1,GEN%> AND NEW.VALUE # '' THEN
                LD(48)<1,GEN%> = ''
             END
             OE.UPD.COGS GEN,POVRD,IQ.COGS,1,OID%,,ACTIONS,RESPS,ACT.RQD
             IF (ACT.RQD) THEN REENTRY = YES; RETURN;
             *** If the change gets made, may need to expire pricing on
             *** a bid.
             IF LED(6)<1,GEN> = 'B' THEN
                OE.VE.AUTH.COST.UPD OID%,GEN,LDID%,,NO,IS.DIR,YES
             END
          END

          GEN.MV = GEN

          * Check the uet codes - may need to add an action to get the
          * right code sent.
          JAVA.UET.LOG.PRC OID%,GEN%,LDID%,ACTIONS

          UPDATE.LEDGER.DET OID%,LDID%,QSIGN%,GEN.MV,LOG.MV%

COGS = LD(10)<1,GEN>
COST = LD(27)<1,GEN>
PN = LD(1)<1,GEN>
READV DESC FROM PRDFILE,PN,1 ELSE DESC = ''
IF COGS > COST AND USER.ID="JOET" THEN
MESS 20,8,BELL:'COGS is greater than Cost for ':DESC<1,1>:'!'
END




          IF PO.VAR.CST THEN
             PO.VAR.CST = ICONV(PO.VAR.CST,'MR9')
             UPD.PO.VARIANCE.VAL PO.VAR.CST,OID%,GEN%,LDID%,CST.ATTB,QSIGN,ERR.MSG
             IF ERR.MSG THEN
                ACTION.ADD.MSG ACTIONS,,,ERR.MSG,,1,YES
             END
          END

          RETURN
*-------------------------------------------------------------------------*
LOT.ITEM: *** We should only get into this routine when updating the
          *** cost on an invoiced, non-roll, lot item generation.
          OE.LOT.CHG.INV.CST OID%,GEN,LDID%,NEW.VALUE,LOT.ERROR,MAKE.NEW

          BEGIN CASE
          CASE LOT.ERROR = 1 OR LOT.ERROR = 2
             RETURN
          CASE LOT.ERROR = 3
             ACTION.ADD.MSG ACTIONS,,,'%144',,YES
          CASE MAKE.NEW
             MESS.ID = 'LOT.NEW.GEN'
             ACTION.ADD ACTIONS,MESS.ID,MESS.ID,NO
          END CASE

          RETURN
!TSMITH~08/16/12~16:37
